function [x,iiIteration,err_var,time_cost]=Newton_Equation_Solver(eqs_original,eqs_derivation,x_init,err_tol,Niteration)
tic;
x=x_init;
eqs_deri_inv = inv(eqs_derivation(x));
for iiIteration=1:Niteration
    x_last = x;
    %x = x-inv(eqs_derivation(x))*eqs_original(x); %Naive Inversion
    %Function Failed to work perperly
    %x = x-(eqs_original(x)'/eqs_derivation(x))';
    x = x-eqs_deri_inv*eqs_original(x);
    x_diff = x-x_last;
    y_diff = eqs_original(x)-eqs_original(x_last);
    eqs_deri_inv = eqs_deri_inv+(x_diff-eqs_deri_inv*y_diff)*x_diff'*eqs_deri_inv/(x_diff'*eqs_deri_inv*y_diff);
    err_var = norm(x_diff);
    if err_var < err_tol
        break;
    end
end
time_cost=toc;
end